/**
  ******************************************************************************
  * @file    sym32l010_hal_irmod.h
  * @author  AE Team
  * @version 1.0.3
  * @date    2024-05-28
  * @brief   Header file of IRMOD HAL module.
  *
  ******************************************************************************
  * @attention
  *
  * <h2><center>&copy; Copyright (c) 2024 SIYIMicro.
  * All rights reserved.</center></h2>
  *
  *
  ******************************************************************************
  */


/* Define to prevent recursive inclusion -------------------------------------*/
#ifndef __SYM32L010_HAL_IRMOD_H
#define __SYM32L010_HAL_IRMOD_H

#ifdef __cplusplus
extern "C" {
#endif


/******************************************************************************/
/* Include files                                                              */
/******************************************************************************/
#include "sym32l010_hal_def.h"


/******************************************************************************/
/* Global type definitions                                                    */
/******************************************************************************/


/******************************************************************************/
/* Global pre-processor symbols/macros ('#define')                            */
/******************************************************************************/
/* 红外调制方式配置-----------------------------------------------------------*/
typedef enum
{
    IRMOD_GTIM1CH1_AND_ATIMCH1_AND_IRSW  = (0x0UL),                   // GTIM1_CH1 & ATIM_CH1 & IRSW
    IRMOD_GTIM1CH1_AND_ATIMCH2_AND_IRSW  = (0x1UL),                   // GTIM1_CH1 & ATIM_CH2 & IRSW
    IRMOD_GTIM1CH2_AND_ATIMCH1_AND_IRSW  = (0x2UL),                   // GTIM1_CH2 & ATIM_CH1 & IRSW
    IRMOD_GTIM1CH2_AND_ATIMCH2_AND_IRSW  = (0x3UL),                   // GTIM1_CH2 & ATIM_CH2 & IRSW
    IRMOD_UART1TXD_AND_GTIM1CH1_AND_IRSW = (0x8UL),                   // UART1_TXD & GTIM1_CH1 & IRSW
    IRMOD_UART1TXD_AND_GTIM1CH2_AND_IRSW = (0xAUL),                   // UART1_TXD & GTIM1_CH2 & IRSW
    IRMOD_UART2TXD_AND_ATIMCH1_AND_IRSW  = (0xCUL),                   // UART2_TXD & ATIM_CH1 & IRSW
    IRMOD_UART2TXD_AND_ATIMCH2_AND_IRSW  = (0xEUL),                   // UART2_TXD & ATIM_CH2 & IRSW
    IRMOD_GTIM1CH1_OR_ATIMCH1_OR_IRSW    = (0x4UL),                   // GTIM1_CH1 | ATIM_CH1 | IRSW
    IRMOD_GTIM1CH1_OR_ATIMCH2_OR_IRSW    = (0x5UL),                   // GTIM1_CH1 | ATIM_CH2 | IRSW
    IRMOD_GTIM1CH2_OR_ATIMCH1_OR_IRSW    = (0x6UL),                   // GTIM1_CH2 | ATIM_CH1 | IRSW
    IRMOD_GTIM1CH2_OR_ATIMCH2_OR_IRSW    = (0x7UL),                   // GTIM1_CH2 | ATIM_CH2 | IRSW
    IRMOD_UART1TXD_OR_GTIM1CH1_OR_IRSW   = (0x9UL),                   // UART1_TXD | GTIM1_CH1 | IRSW
    IRMOD_UART1TXD_OR_GTIM1CH2_OR_IRSW   = (0xBUL),                   // UART1_TXD | GTIM1_CH2 | IRSW
    IRMOD_UART2TXD_OR_ATIMCH1_OR_IRSW    = (0xDUL),                   // UART2_TXD | ATIM_CH1 | IRSW
    IRMOD_UART2TXD_OR_ATIMCH2_OR_IRSW    = (0xFUL)                    // UART2_TXD | ATIM_CH2 | IRSW
}IRMOD_ModulateModTypeDef;

/* IR输出极性配置-----------------------------------------------------------*/
typedef enum
{
    IRMOD_POLARITY_POSITIVE              = (0x0UL << IRMOD_CR_POLARITY_Pos), // 正向输出
    IRMOD_POLARITY_NEGATIVE              = (0x1UL << IRMOD_CR_POLARITY_Pos)  // 反向输入
} IRMOD_PolarityTypeDef;


/******************************************************************************/
/* Global macro function                                                      */
/******************************************************************************/
/**
  * @brief  置位 IRMOD_CR 寄存器的红外调制软件控制(IRSW)位
  * @param  None
  * @retval None
  */
#define HAL_IRMOD_IRSW_SETHIGH()         (SYM_IRMOD->CR |= IRMOD_CR_IRSW_Msk)

/**
  * @brief  重置 IRMOD_CR 寄存器的红外调制软件控制(IRSW)位
  * @param  None
  * @retval None
  */
#define HAL_IRMOD_IRSW_SETLOW()          (SYM_IRMOD->CR &= ~(IRMOD_CR_IRSW_Msk))


/******************************************************************************/
/* Exported variables ('extern', definition in C source)                      */
/******************************************************************************/


/******************************************************************************/
/* Global function prototypes ('extern', definition in C source)              */
/******************************************************************************/
void HAL_IRMOD_Config(IRMOD_ModulateModTypeDef ModulateMod, IRMOD_PolarityTypeDef Polarity);
void HAL_IRMOD_IRSW_SetHigh(void);
void HAL_IRMOD_IRSW_SetLow(void);

#ifdef __cplusplus
}
#endif

#endif /* __SYM32L010_HAL_IRMOD_H */


/************************ (C) COPYRIGHT SIYIMicro *****END OF FILE*************/
